//
//  UIView+CQPopupBottomPanlineToolbarAction.h
//  AppCommonUICollect
//
//  Created by ciyouzen on 2019/8/13.
//  Copyright © 2019 dvlproad. All rights reserved.
//
//  一个包着①自身和②【公共的顶部的PanLine（可定义是否添加）】和③toolbar的【容器视图】来作为最终视图弹出

#import <UIKit/UIKit.h>
#import <CJPopupContainer/CQPopupEnum.h>
#import <CJPopupContainer/CQPopupBottomToolbarContentView.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIView (CQPopupBottomPanlineToolbarAction) {
    
}

- (UIView *)cqToolbar_realPopupView;

#pragma mark - 从底部弹出当前视图的相关代码
/*
 *  将当前视图加上toolbar(没有确认按钮)后显示到window底部
 *
 *  @param popupSuperview                   弹出视图的父视图view(如果为nil，则会弹出到window上)
 *  @param selfHeight                       本视图未加顶部下拉线和顶部工具栏时候的干净高度
            （即使本视图最终是由其他视图包着弹出,这里也只输入本视图被干净弹出的高度,实际最终的弹窗高度,内部会自动计算后以最终高度弹出)
 *  @param title                            弹出视图的上部toolbar中的title
 *  @param shouldAddPanAction               是否添加仿抖音评论的下拉拖动手势(附对于那些会弹出键盘的视图，一般设为NO，即不添加)
 */
- (void)cqPopup_bottom_with_panline_toolbarWithoutOK_showInView:(nullable UIView *)popupSuperview
                                                     withHeight:(CGFloat)selfHeight
                                                   toolbarTitle:(NSString *)title
                                             shouldAddPanAction:(BOOL)shouldAddPanAction;


/*
 *  将当前视图加上toolbar(有确认按钮)后显示到window底部(可自定制点击空白区域会不会优先尝试执行确认操作，不行才执行取消操作的事件)
 *
 *  @param popupSuperview                   弹出视图的父视图view(如果为nil，则会弹出到window上)
 *  @param selfHeight                       本视图未加顶部下拉线和顶部工具栏时候的干净高度
            （即使本视图最终是由其他视图包着弹出,这里也只输入本视图被干净弹出的高度,实际最终的弹窗高度,内部会自动计算后以最终高度弹出)
 *  @param bgType                           背景类型
 *  @param effectType                       模糊类型
 *  @param title                            弹出视图的上部toolbar中的title
 *  @param okHandle                         确认事件(通过返回ok事件执行后所得结果及要对弹窗所做的动作来控制隐藏)
            （额外增加toolbarOKEnable参数，因为该确认事件除含toolbar的确认外，还可能要求点击空白区域时候要优先尝试执行确认操作，不行才执行取消操作的事件）
 *  @param shouldAddPanAction               是否添加仿抖音评论的下拉拖动手势(附对于那些会弹出键盘的视图，一般设为NO，即不添加)
 *  @param tapBlankOrPandissmissFirstTryOK  点击空白区域/下拉会不会优先尝试执行确认操作，不行才执行取消操作(NO，则直接执行取消操作)
 */
- (void)cqPopup_bottom_with_panline_toolbarWithOK_showInView:(nullable UIView *)popupSuperview
                                                  withHeight:(CGFloat)selfHeight
                                                  selfBGType:(CQBottomPopupViewBGTheme)selfBGType
                                                  effectType:(CQEffectFor)effectType
                                                toolbarTitle:(NSString *)title
                                                    oKHandle:(CQOKResult(^)(BOOL toolbarOKEnable, CQOKOperation okOperation))okHandle
                                          shouldAddPanAction:(BOOL)shouldAddPanAction
                                          tapBlankFirstTryOK:(BOOL)tapBlankOrPandissmissFirstTryOK;



/*
 *  从window底部隐藏当前视图
 */
- (void)cqPopup_bottom_with_panline_toolbar_hide;

#pragma mark - Update(比较少用)
- (CQPopupBottomToolbarContentView *)getToolbarContentView;

/// 更新视图的工具栏上的标题（常见场景：①输入文字时候，显示剩余几个字；②地点选择时候，实时更新对应的地点文本）
- (void)cqCustom_toolbar_updateToobarTitle:(NSString *)toolbarTitle;
/// 更新视图的工具栏上的“完成”按钮的enable（场景场景：输入文字时候，有输入文字允许点击完成，没输入不允许点击完成）
- (void)cqCustom_toolbar_updateToobarOKEnable:(BOOL)toolbarOKEnable;


/// 更新视图的工具栏上的确认标题（默认是"完成"，需要更新的话，要调用此方法）
- (void)cqCustom_toolbar_updateToobarOKTitle:(NSString *)toolbarOKTitle;

/*
 *  更新popupView视图的高度，内部会同时更新realPopupView的高度（常使用带有输入文本框的弹出视图，随着输入内容的长度变化，高度会变化）
 *  @brief: 此方法的调用者为除toolbar外的那个popupView(非realPopupView)
 *
 *  @param selfHeight                   本视图未加顶部下拉线和顶部工具栏时候的干净高度
 （即使本视图最终是由其他视图包着弹出,这里也只输入本视图被干净弹出的高度,实际最终的弹窗高度,内部会自动计算后以最终高度弹出)
 */
- (void)cqCustom_toolbar_updatePopupContentHeight:(CGFloat)selfHeight;

@end

NS_ASSUME_NONNULL_END
